package com.example.medmobile.profissional;

import java.text.SimpleDateFormat;
import java.util.List;
import java.util.TimeZone;

import utils.AlertMagnatic;
import utils.MostraAviso;
import utils.MyApplication;
import WebService.SoapWebService;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.example.medmobile.R;
import com.google.appengine.medmobileserver.business.Paciente;



public class CaixaEntradaProfissionalAdapter  extends BaseAdapter{

	private Context context;
	private List<com.google.appengine.medmobileserver.business.Agendamento> lista;

	public CaixaEntradaProfissionalAdapter(Context context,   List<com.google.appengine.medmobileserver.business.Agendamento> lista) {
		this.context = context;
		this.lista = lista;
		
	}
	
	public int getCount()
	{
	return lista.size();
	}
	
	public Object getItem(int i)
	{
		return lista.get(i);
	}
	
	public long getItemId(int position)
	{
		return position;
	}
	
	public View getView(final int posicao, View converView, ViewGroup parent){
		com.google.appengine.medmobileserver.business.Agendamento agendamento = lista.get(posicao);
		LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
		final View v = inflater.inflate(R.layout.activity_caixa_entrada_profissional_adapter, null);
		TextView textNome  = (TextView) v.findViewById(R.id.CaixaEntradaNomePaciente);
		TextView textEndereco  = (TextView) v.findViewById(R.id.CaixaEntradaDataConsulta);
		
		TextView textStatus  = (TextView) v.findViewById(R.id.CaixaEntradaStatusConsulta);		
		TextView textHorario  = (TextView) v.findViewById(R.id.CaixaEntradaHorarioConsulta);		
		textNome.setText(agendamento.getPaciente().getNome());
		textEndereco.setText(new SimpleDateFormat("dd/MM/yyyy").format(agendamento.getDataHora()));
		
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");	
		sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
		
		textHorario.setText(sdf.format(agendamento.getDataHora().getTime()));
		textStatus.setText(agendamento.getStatus());	
		
		if (agendamento.getStatus().equals("Confirmado"))
			textStatus.setTextColor(context.getResources().getColor(R.color.verde));
		else if (agendamento.getStatus().equals("Pendente"))
			textStatus.setTextColor(context.getResources().getColor(R.color.laranja));
		else if (agendamento.getStatus().equals("Cancelado"))
			textStatus.setTextColor(context.getResources().getColor(R.color.vermelho));
		
		v.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Paciente p =  lista.get(posicao).getPaciente();
				Intent intent = new Intent();
				Bundle param = new Bundle();
				String sJson = com.cedarsoftware.util.io.JsonWriter.toJson(p);

				param.putString("Paciente", sJson);
				intent.putExtras(param);
				intent.setClass(context, PerfilPaciente.class);
				context.startActivity(intent);

			}
		});
		
		
		ImageButton ibRealizadoCancelar = (ImageButton) v.findViewById(R.id.ibAgendamentoRealizado);
		ibRealizadoCancelar.setTag(posicao);
		
		ibRealizadoCancelar.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View viewButton) {
				final int iPosicao = (Integer) viewButton.getTag();
				final com.google.appengine.medmobileserver.business.Agendamento ag = lista.get(iPosicao);
				new Thread() {
					public void run() {
						
						SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");	
						sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
						

						
						
						MostraAviso m = new MostraAviso(context);
						m.MostraPergunta("Agendamento",
								"Deseja marcar como realizado o agendamento do dia "
										+ sdf.format(ag.getDataHora().getTime()) + "?",
								new AlertMagnatic() {

									@Override
									public void onButtonClicked(boolean value) {
										if (value) {
											Toast toast = Toast.makeText(context,
													"Salvando ...",
													1500);
											toast.show();

											new Thread() {
												public void run() {
													String s = SoapWebService.RealizarAgendamento(ag.getIdAgendamento());
													if (s.equals("Agendamento realizado com sucesso."))
													{
														  new Thread() { public void run() {
														  
															  
																MyApplication.currentActivity().
																runOnUiThread(new Runnable() { public void run() {
															  
																	TextView textStatus = (TextView) v.findViewById(R.id.CaixaEntradaStatusConsulta);
																	textStatus.setText("Realizado");
																	textStatus.setTextColor(context.getResources().getColor(R.color.verde));  
														
															  } });
															  
															  } }.start();
															  
										
												
														
													
													}
													MostraAviso m = new MostraAviso(context);
													m.MostraAviso("Aviso", s);

												}
											}.start();
										}
									}
								});

					}
				}.start();
			}
		});
		
		
		
		return v;		
	}

	

	
}


